@echo off
echo ========================================
echo       清算服务一键部署脚本
echo ========================================
echo.

:: 设置颜色
color 0A



:: 检查Python环境
echo [步骤1] 检查Python环境...
python --version >nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 未找到Python环境，请先安装Python 3.8+
    echo 下载地址: https://www.python.org/downloads/
    pause
    exit /b 1
)

echo [成功] Python环境检查通过
for /f "tokens=2" %%i in ('python --version 2^>^&1') do echo [信息] Python版本: %%i
echo.

:: 检查pip环境
echo [步骤2] 检查pip环境...
pip --version >nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 未找到pip，请重新安装Python
    pause
    exit /b 1
)

echo [成功] pip环境检查通过
for /f "tokens=2" %%i in ('pip --version') do echo [信息] pip版本: %%i
echo.

:: 创建必要的目录
echo [步骤3] 创建必要的目录...
if not exist "logs" mkdir logs
if not exist "temp_downloads" mkdir temp_downloads
if not exist "charts" mkdir charts
if not exist "monitor\logs" mkdir monitor\logs
echo [成功] 目录创建完成
echo.

:: 安装项目依赖
echo [步骤4] 安装项目依赖...
echo [信息] 正在安装依赖包，请稍候...
pip install -r requirements.txt
if %errorlevel% neq 0 (
    echo [错误] 依赖安装失败
    echo 请检查网络连接或手动运行: pip install -r requirements.txt
    pause
    exit /b 1
)

echo [成功] 项目依赖安装完成
echo.

:: 检查配置文件
echo [步骤5] 检查配置文件...
if not exist "config.py" (
    echo [警告] 未找到config.py文件，请确保配置文件存在
    echo 请参考config.example.py创建配置文件
    pause
    exit /b 1
)

echo [成功] 配置文件检查通过
echo.

:: 检查端口占用
echo [步骤6] 检查端口占用...
netstat -an | findstr ":8088" >nul
if %errorlevel% equ 0 (
    echo [警告] 端口8088已被占用
    echo 请检查是否有其他服务正在使用此端口
    choice /c yn /m "是否继续部署? (y/n) "
    if %errorlevel% neq 1 (
        echo [信息] 部署已取消
        pause
        exit /b 0
    )
) else (
    echo [成功] 端口8088可用
)
echo.

:: 启动服务
echo [步骤7] 启动清算服务...
echo [信息] 服务将在后台启动
echo [信息] 服务地址: http://localhost:8088
echo [信息] API文档: http://localhost:8088/docs
echo [信息] 按 Ctrl+C 停止服务
echo.

:: 启动主服务
start "清算服务" cmd /k "python main.py"

:: 等待服务启动
echo [信息] 等待服务启动...
timeout /t 10 /nobreak >nul

:: 检查服务状态
echo [步骤8] 检查服务状态...
curl -s http://localhost:8088/health >nul 2>&1
if %errorlevel% equ 0 (
    echo [成功] 清算服务启动成功
    echo [信息] 服务健康检查通过
) else (
    echo [警告] 清算服务可能启动失败，请检查日志
)
echo.

:: 启动监控服务
echo [步骤9] 启动监控服务...
if exist "monitor\run_service_monitor.bat" (
    start "服务监控" cmd /k "cd monitor && run_service_monitor.bat"
    echo [成功] 监控服务启动成功
    echo [信息] 监控日志: logs\monitor.log
) else (
    echo [警告] 未找到监控启动脚本
)
echo.

:: 部署完成
echo ========================================
echo [完成] 清算服务部署完成！
echo ========================================
echo.
echo 服务信息:
echo - 主服务: http://localhost:8088
echo - API文档: http://localhost:8088/docs
echo - 健康检查: http://localhost:8088/health
echo.
echo 日志文件:
echo - 主服务日志: logs\app.log (如果配置了)
echo - 监控日志: logs\monitor.log
echo.
echo 管理命令:
echo - 停止服务: 关闭对应的命令行窗口
echo - 查看日志: type logs\monitor.log
echo - 重启服务: 重新运行此脚本
echo.
echo [提示] 请保持命令行窗口开启以维持服务运行
echo.

:: 询问是否打开浏览器
choice /c yn /m "是否打开浏览器访问服务? (y/n) "
if %errorlevel% equ 1 (
    start http://localhost:8088/docs
)

pause